package test;

import com.neuedu.corejava.ch7.inter.Animal;
import com.neuedu.corejava.ch7.inter.IFly;

public class TeatInterface {
 
	public static void main(String[] args) {
		
		//接口不能被实例化，不能使用new关键词实例化对象
		//IFly fly=new IFly() ;
		String  name=IFly.WINGS;
		
		//向上转型：自动类型转换：把子类对象赋值给父类引用，或父接口引用
		IFly fly=new Animal();
		fly .fly();
		fly.sing();
		//子类比父类或父接口多的方法，不能进行调用
		//fly.sun();
		Object object=new Object();
		//父类对象不能直接赋值给子类引用
		
		//Animal  animal= object ;
		//Animal animal=(Animal) object;//父类对象需要强制转换，才能赋值给子类引用
		//animal.sing();
		
		if(object instanceof Animal) {
			Animal animal2=(Animal) object;
			animal2.sing();
		}else {
			System.out.println("不是类型还原，不能进行强制转换");
		}
		
		//向下类型转换，需要进行类型强制转换；类型强制转换本质是类型还原
		if(fly instanceof Animal) {
		Animal animal=(Animal) fly;
		animal.sing();
		}else {
			System.out.println("不是类型还原，不能进行强制转换");
		}
		
	}
	
	//一个类可以实现多个接口，实现接口可以使用implements关键词
	//class 类名   implements 接口名   {类主体}
	class MyFly implements IFly{

		@Override
		public void fly() {
			
		}
		
	}

}
